package com.yy.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yy.constants.ProdTagConstant;
import com.yy.domain.ProdTag;
import com.yy.dto.PageDTO;
import com.yy.dto.ProdTagQueryDTO;
import com.yy.mapper.ProdTagMapper;
import com.yy.service.ProdTagService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;

import java.util.List;

/**
* @author yy5
* @description 针对表【prod_tag(商品分组表)】的数据库操作Service实现
* @createDate 2023-11-27 20:47:05
*/
@Service
@CacheConfig(cacheNames = "com.yy.service.impl.ProdTagServiceImpl")
public class ProdTagServiceImpl extends ServiceImpl<ProdTagMapper, ProdTag>
    implements ProdTagService{

    @Autowired
    private ProdTagMapper prodTagMapper;
    /**
     * 分页查询活动标签
     *
     * @param pageDTO
     * @param prodTagQueryDTO
     */
    @Override
    public Page<ProdTag> loadProdTagPage(PageDTO pageDTO, ProdTagQueryDTO prodTagQueryDTO) {
        //根据状态，标签查询,按排序码降序排序
        Page<ProdTag> prodTagPage=new Page<>(pageDTO.getCurrent(),pageDTO.getSize());
        return this.getBaseMapper().selectPage(prodTagPage,new LambdaQueryWrapper<ProdTag>()
                .eq(!ObjectUtils.isEmpty(prodTagQueryDTO.getStatus()),ProdTag::getStatus,prodTagQueryDTO.getStatus())
                .like(!StringUtils.hasText(prodTagQueryDTO.getTitle()),ProdTag::getTitle,prodTagQueryDTO.getTitle())
                .orderByDesc(ProdTag::getSeq)
        );
    }

    /**
     * 查询可用的活动标签列表
     */
    @Override
    @Cacheable(key = ProdTagConstant.PROD_TAG_LIST)
    public List<ProdTag> loadProdTags() {
        //查询状态为1的 排序，走缓存
        return this.getBaseMapper().selectList(new LambdaQueryWrapper<ProdTag>()
                .eq(ProdTag::getStatus,1L)
                .orderByDesc(ProdTag::getSeq)
        );
    }


    /**
     * 查询商城首页的活动标签列表
     *
     * @return
     */
    @Override
    @Cacheable(key = ProdTagConstant.PROD_TAG_MALL_LIST)
    public List<ProdTag> prodTagMallList() {
        return getBaseMapper().selectList(new LambdaQueryWrapper<ProdTag>()
                .select(ProdTag::getId, ProdTag::getTitle, ProdTag::getStyle)
                .eq(ProdTag::getStatus, 1)
                .orderByDesc(ProdTag::getSeq)
        );
    }

}




